package main

////函数签名#即函数类型
////fmt.printf(%T, func)来打印函数类型
////函数类型相同的条件是 拥有相同的形参列表和返回值列表，如下
///*
//	func add(a, b int) int {return a + b}
//	func add(x int, y int) (c int) {c = x -y; return c}
//*/
////也可使用type定义函数类型
//
//func add(a, b int) int {
//	return a + b
//}
//
//func sub(a, b int) int {
//	return a - b
//}
//
////定义一个函数类型，输入两个int，型输出一个int型
////这不是一个函数
//type Op func(int, int) int
//
////第一个参数是函数类型
////f 只可传入与 Op 类型相同的函数
//func doc(f Op, a, b int) int {
//	return f(a, b)
//}
//
//func main() {
//	a := doc(add, 1, 2)
//	fmt.Println(a)
//	b := doc(sub, 1, 2)
//	fmt.Println(b)
//}
